package Polymorphism2;



abstract class Shape{
// 凡是 一个类中，包含抽象方法，就要改类前面加上 abstract 修饰，叫做抽象类。
    public int a;
    public void func(){
        System.out.println("测试普通成员方法");
    }
    public  abstract void draw();// 加上分号，代表没有不实现任何现象
    // 在 public 后面加上 abstract 这样它就变成了一个抽象方法
}
abstract class A extends Shape{
    public abstract void funcA();
}
class C extends A{
    @Override
    public void funcA() {
        System.out.println("funca");
    }

    @Override
    public void draw() {
        System.out.println("shape");
    }
}
// 矩形
class Rect extends Shape{
    @Override
    public void draw() {
        System.out.println("♦"+a);
        func();// super.func() 两种写法都可以
    }
}


// 花
class Flower extends Shape {
    @Override
    public void draw() {
        System.out.println("❀");
    }
}
//三角形
class Triangle extends Shape {
    @Override
    public void draw() {
        System.out.println("△");
    }
}
public class Test {
    public static  void paint(Shape shape){
        shape.draw();
    }
    public static void main(String[] args) {
        paint(new Rect());
    }
}
